<?php
class TTEvent_View_Helper_smilleyParser extends Zend_View_Helper_Abstract
{
	public function smilleyParser($message)
	{
        
		list($smilley_key, $smilley_token, $emotions)=$this->_get_smilley_list();
		$message=stripcslashes($message);
		//change emotion to tocken (prevent check_plain replace speacial chars)
		$message = str_replace($smilley_key, $smilley_token, $message);
		//replace special char
		//$message=nl2br($this->view->escape($message));
		//replace tocken with emotion
		$message = str_replace($smilley_token, $emotions, $message); 
        $message = $this->checklink($message);
        /* 
        $arr=Array();
        $arr=explode("\n",$message);
        if(count($arr)==1)
            {
            $arr=explode(" ",$message);
                for($i=0;$i<=count($arr);$i++)
                {
                switch(1)
                    {
                    case strripos("a".$arr[$i],"www."):
                    $arr[$i]="<a href='http://".$arr[$i]."'>".$arr[$i]."</a>";   
                    break;
                    case strripos("a".$arr[$i],"http://"):
                    $arr[$i]="<a href='".$arr[$i]."'>".$arr[$i]."</a>";
                    break;   
                    case strripos("a".$arr[$i],"https://"):
                    $arr[$i]="<a href='".$arr[$i]."'>".$arr[$i]."</a>";
                    break;
                    }  
                }
                $message=implode(" ",$arr);
                return $message;
            }
        else
            {
                    for($j=0;$j<count($arr);$j++)
                    {
              //      $n=count($arr);
               //     echo "z".$arr[$j]."z";
                    $arr2[$j]=explode(" ",$arr[$j]);
                           for($i=0;$i<count($arr2[$j]);$i++)
                            {     
                            switch(1)
                                    {
                                          case strripos("a".$arr2[$j][$i],"www."):
                                            $arr2[$j][$i]="<a href='http://".$arr2[$j][$i]."'>".$arr2[$j][$i]."</a>";   
                                            break;
                                            case strripos("a".$arr2[$j][$i],"http://"):
                                            $arr2[$j][$i]="<a href='".$arr2[$j][$i]."'>".$arr2[$j][$i]."</a>";
                                            break;   
                                            case strripos("a".$arr2[$j][$i],"https://"):
                                            $arr2[$j][$i]="<a href='".$arr2[$j][$i]."'>".$arr2[$j][$i]."</a>";
                                            break;
                                    }              
                            }
                        $message2[$j]=implode(" ",$arr2[$j]);
                    }
                $message=implode("</br>",$message2);
                return $message;
            }
            
  //     for($i=0;$i<=count($arr);$i++)
  //      {
          /*      if(strripos("a".$arr[$i],"www.")==1)
                    {
                       $arr[$i]="<a href='http://".$arr[$i]."'>".$arr[$i]."</a>";   
                    }
                if(strripos("a".$arr[$i],"http://")==1)
                    {
                       $arr[$i]="<a href='".$arr[$i]."'>".$arr[$i]."</a>";   
                    }
                if(strripos("a".$arr[$i],"https://")==1)
                    {
                       $arr[$i]="<a href='".$arr[$i]."'>".$arr[$i]."</a>";   
                    }
           
           */ 
  /*       if(strripos($arr[$i],"br"))
            {
                $message=$arr[$i];
            }
      
             switch(1)
                {
                    case strripos("a".$arr[$i],"www."):
                       str_replace($arr[$i],"<a href='http://".$arr[$i]."'>".$arr[$i]."</a>",$message);
                    case strripos("a".$arr[$i],"http://"):
                         $arr[$i]="<a href='".$arr[$i]."'>".$arr[$i]."</a>";   
                    case strripos("a".$arr[$i],"https://"):
                        $arr[$i]="<a href='".$arr[$i]."'>".$arr[$i]."</a>";
                }
               
               if(strripos("a".$arr[$i],"www.")==1)
                    {
                       $message=str_replace($arr[$i],"<a href=http://".$arr[$i].">".$arr[$i]."</a>",$message);
                    }
                   
        }
        $message=implode(" ",$arr);
        end va   */
		return $message;  
	}

    private function checklink($message)
    {
        $arr=Array();
        $arr=explode("\n",$message);
        if(count($arr)==1)
            {
            $arr=explode(" ",$message);
                for($i=0;$i<=count($arr);$i++)
                {
                switch(1)
                    {
                    case strripos("a".$arr[$i],"www."):
                    $arr[$i]="<a href='http://".$arr[$i]."'>".$arr[$i]."</a>";   
                    break;
                    case strripos("a".$arr[$i],"http://"):
                    $arr[$i]="<a href='".$arr[$i]."'>".$arr[$i]."</a>";
                    break;   
                    case strripos("a".$arr[$i],"https://"):
                    $arr[$i]="<a href='".$arr[$i]."'>".$arr[$i]."</a>";
                    break;
                    }  
                }
                $message=implode(" ",$arr);
                return $message;
            }
        else
            {
                    for($j=0;$j<count($arr);$j++)
                    {
              
                    $arr2[$j]=explode(" ",$arr[$j]);
                           for($i=0;$i<count($arr2[$j]);$i++)
                            {     
                            switch(1)
                                    {
                                          case strripos("a".$arr2[$j][$i],"www."):
                                            $arr2[$j][$i]="<a href='http://".$arr2[$j][$i]."'>".$arr2[$j][$i]."</a>";   
                                            break;
                                            case strripos("a".$arr2[$j][$i],"http://"):
                                            $arr2[$j][$i]="<a href='".$arr2[$j][$i]."'>".$arr2[$j][$i]."</a>";
                                            break;   
                                            case strripos("a".$arr2[$j][$i],"https://"):
                                            $arr2[$j][$i]="<a href='".$arr2[$j][$i]."'>".$arr2[$j][$i]."</a>";
                                            break;
                                    }              
                            }
                        $message2[$j]=implode(" ",$arr2[$j]);
                    }
                $message=implode("</br>",$message2);
                return $message;
            }
    }
	private function _get_smilley_list()
	{
		static $smilley=null;
		static $smilley_key=null;
		static $smilley_token=null;
		static $emotions=null;
		if ($smilley==null)
		{
			$smilley = array(	':)'=>'{_smile_}',
					':('=>'{_sad_}',
					';)'=>'{_winking_}',
					':D'=>'{_big_grin_}',
					';;)'=>'{_batting_eyelashes_}',
					'>:D<'=>'{_big_hug_}',
					':-/'=>'{_confused_}',
					':x'=>'{_love_struck_}',
					':">'=>'{_blushing_}',
					':P'=>'{_tongue_}',
					':*'=>'{_kiss_}',
					'=(('=>'{_broken_heart_}',
					':o'=>'{_surprise_}',
					':X'=>'{_angry_}',
					':>'=>'{_smug_}',
					'B-)'=>'{_cool_}',
					':-S'=>'{_worried_}',
					'#:-S'=>'{_whew_}',
					'>:)'=>'{_devil_}',
					':(('=>'{_crying_}',
					':))'=>'{_laughing_}',
					':|'=>'{_straight_face_}',
					'/:)'=>'{_raised_eyebrow_}',
					'=))'=>'{_rolling_on_the_floor_}',
					'O:)'=>'{_angel_}',
					':-B'=>'{_nerd_}',
					'=;'=>'{_talk_to_the_hand_}',
					'l-|'=>'{_sleepy_}',
					'8-|'=>'{_rolling_eyes_}',
					'L-)'=>'{_loser_}',
					':-&'=>'{_sick_}',
					':-$'=>'_dont_tell_anyone_}',
					'[-)'=>'{_not_talking_}',
					':o)'=>'{_clown_}',
					'8-}'=>'{_silly_}',
					'<:-P'=>'{_party_}',
					'(:|'=>'{_yawn_}',
					'=P~'=>'{_drooling_}',
					':-?'=>'{_thinking_}',
					'#-o'=>'{_doh_}',
					'=D>'=>'{_applause_}',
					':-SS'=>'{_nailbiting_}',
					'@-)'=>'{_hypnotized_}',
					':^)'=>'{_liar_}',
					':-w'=>'{_waiting_}',
					':-<'=>'_{sigh_}',
					'>:p'=>'{_phbbbbt_}'/*,
					':-j'=>'{_oh_go_on_}',
					':@)'=>'{_pig_}',
					'3:-O'=>'{_cow_}',
					':(|)'=>'{_monkey_}',
					'~:>'=>'{_chicken_}',
					':-"'=>	'{_whistling_}',
					'b-('=>'{_feeling_beat_up_}',
					'\:D/'=>'{_dancing_}',
					';))'=>'{_hee_hee_}',
					'^:)^'=>'{_not_worthy_}',*/);
			
			$smilley_key=array_keys($smilley);
			$smilley_token=array_values($smilley);
			$emotions=array();
			for ($i=0; $i<count($smilley_token); $i++)
			{
				$emotions[]='<img src="http://img.tamtay.vn/misc/smilley/' . ($i+1) . '.gif" align="absmiddle" />';
			}
			
			//short
			for ($i=0; $i<(count($smilley_key)-1); $i++)
			{
				$max_length=$i;
				for ($j=$i+1; $j<count($smilley_key); $j++)
				{
					if (strlen($smilley_key[$max_length]) < strlen($smilley_key[$j]))
					{
						$max_length=$j;
					}
				}
				if ($max_length>$i)
				{
					$temp=$smilley_key[$i];
					$smilley_key[$i]=$smilley_key[$max_length];
					$smilley_key[$max_length]=$temp;
					
					$temp=$smilley_token[$i];
					$smilley_token[$i]=$smilley_token[$max_length];
					$smilley_token[$max_length]=$temp;
					
					$temp=$emotions[$i];
					$emotions[$i]=$emotions[$max_length];
					$emotions[$max_length]=$temp;
				}
			}
		}
		
		return array($smilley_key, $smilley_token, $emotions);
	}
    
}

